package com.chapter1;

import java.math.BigDecimal;
import java.util.Objects;

/**
 * @author xiangty
 * <p>
 * 2019-04-25
 * 注：加减乘除其实最终都返回的是一个新的BigDecimal对象，因为BigInteger与BigDecimal都是不可变的（immutable）的，在进行每一步运算时，都会产生一个新的对象
 */
public class BigDecimalDemo {

    public static void main(String[] args) {
        test();
		
    }
    
    /**
     * 加减乘除运算操作
     */
    public static void test() {
        BigDecimal num1 = new BigDecimal("1.33333");
        BigDecimal num2 = new BigDecimal("2.66666");
        System.out.println("加：add   " + num1.add(num2));
        System.out.println("减：subtract   " + num1.subtract(num2));
        System.out.println("乘：multiply   " + num1.multiply(num2));
        // num1 除以 num2
        System.out.println("除：divide   " + num1.divide(num2));

        BigDecimal temp = null;
        BigDecimal num3 = new BigDecimal("1.33333");
        BigDecimal num4 = new BigDecimal("2.66666");
        temp = num3.add(num4);
        System.out.println("num3: " + num3);
        System.out.println("temp: " + temp);
    }

    /**
     * 精度不准确的例子
     */
    public static void example() {
        System.out.println(0.2 + 0.1);
        System.out.println(0.3 - 0.1);
        System.out.println(0.2 * 0.1);
        System.out.println(0.3 / 0.1);

        BigDecimal doubleBigDecimal = new BigDecimal(1.33333);
        System.out.println("doubleBigDecimal   " + doubleBigDecimal);
    }

    public static void zhuanghuan1() {
        BigDecimal intBigDecimal = new BigDecimal(1111111111);
        System.out.println("intBigDecimal   " + intBigDecimal);

        // 推荐使用
        BigDecimal strBigDecimal = new BigDecimal("11111111111111111111111");
        System.out.println("strBigDecimal:   " + strBigDecimal);
    }

}
